home *** CD-ROM | disk | FTP | other *** search
/ Almathera Ten Pack 3: CDPD 3 / Almathera Ten on Ten - Disc 3: CDPD3.iso / scope / 201-220 / scopedisk208 / portlist / showlists.c < prev    next >
C/C++ Source or Header  |  1995-03-19  |  5KB  |  172 lines

  1. /* ShowLists.c  */
  2.  
  3. /* 13 Aug 1991 At 09:58:37 */
  4. #include <exec/execbase.h>
  5. #include <proto/intuition.h>
  6. #include <proto/gadtools.h>
  7. #include <proto/exec.h>
  8. #include <intuition/gadgetclass.h>
  9. #include <intuition/screens.h>
  10. struct ExecBase *ExecBase;
  11. struct IntuitionBase *IntuitionBase = NULL;
  12. struct GadToolsBase *GadToolsBase = NULL;
  13. struct Window *WBWindow = NULL;
  14. struct Screen *WBScreen = NULL;
  15. APTR vi = NULL;
  16. BOOL activated = TRUE;
  17. struct Gadget *currgad,*g0,*g1;
  18. struct Gadget *gadlist = NULL;
  19. #define NUMLISTS 6
  20. struct List *ExecLists[NUMLISTS];
  21. #define REFRESHBUTTON 2
  22. #define NODEGAD_ID 1
  23. #define LVGADHEIGHT 95
  24. #define LVGADWIDTH 165
  25. #define LVGADY 15
  26. #define LVGADX 13
  27. #define LABLEN 8
  28.  
  29. static char *CycleLabels[NUMLISTS+1] =            /* up to LABLEN long strings */
  30.     { "  PORTS   ",
  31.       " DEVICES  ",
  32.       " LIBRARY  ",
  33.       " TASKWAIT ",
  34.       " RESOURCE ",
  35.       "  MEMORY  ",
  36.     };
  37.  
  38. void Bummer(char *errmsg)
  39. {
  40.     puts(errmsg);
  41.     CleanExit(5);
  42. }
  43. int CleanExit(returnvalue)
  44. int returnvalue;
  45. {
  46.     if (gadlist)
  47.         FreeGadgets(gadlist);
  48.     if (vi)
  49.         FreeVisualInfo(vi);
  50.     if (WBWindow) CloseWindow (WBWindow);
  51.     if (WBScreen != NULL)
  52.         UnlockPubScreen (NULL, WBScreen);
  53.     if (GadToolsBase)
  54.         CloseLibrary ((struct Library *)GadToolsBase);
  55.     if (IntuitionBase)
  56.         CloseLibrary ((struct Library *)IntuitionBase);
  57.     if (ExecBase)
  58.         CloseLibrary ((struct Library *)ExecBase);
  59.     exit (returnvalue);
  60.     return (returnvalue);
  61. }
  62.  
  63. void handleIDCMP(struct Window *win)
  64. {
  65.     struct IntuiMessage *message = NULL;
  66.     struct Gadget *gad = NULL;
  67.     ULONG class, signals, signalmask;
  68.     WORD code;
  69.     int CurList=0;
  70.  
  71.     signalmask = 1L << win->UserPort->mp_SigBit;
  72.     while (1)
  73.     {
  74.         signals = Wait(signalmask);
  75.         if (signals & signalmask)
  76.             while (message = (struct IntuiMessage *)GT_GetIMsg(win->UserPort))
  77.             {
  78.                 class = message->Class;
  79.                 code = (WORD)message->Code;
  80.                 gad = (struct Gadget *) message->IAddress;
  81.                 GT_ReplyIMsg(message);
  82. /*                            printf("Gadget: %d,  Code: %d\n",gad->GadgetID,code); */
  83.                 switch(class)
  84.                 {
  85.                     case CLOSEWINDOW:
  86.                       CleanExit(0);
  87.                     case GADGETUP:  /*  Fall through to window activated case...  */
  88.                       CurList=code;
  89.                                     default:  /* only activate message I hope */
  90.                       GT_SetGadgetAttrs(g0, WBWindow, NULL,GTLV_Labels,ExecLists[CurList]);
  91.                       break;
  92.                 }
  93.             }
  94.     }
  95. }
  96.  
  97.  
  98. struct NewGadget ng = {
  99.     LVGADX,LVGADY,
  100.     LVGADWIDTH, LVGADHEIGHT,
  101.     "",
  102.     NULL,
  103.     1,
  104.     PLACETEXT_BELOW,
  105.     NULL,
  106.     NULL
  107. };
  108.  
  109.  
  110. void main(int argc, char *argv[])
  111. {
  112.  
  113.     IntuitionBase = (struct IntuitionBase *) OpenLibrary ("intuition.library", 36);
  114.     if (IntuitionBase == NULL)
  115.         CleanExit(30);
  116.     ExecBase = (struct ExecBase *) OpenLibrary ("exec.library", 36);
  117.     if (ExecBase == NULL)
  118.         CleanExit(30);
  119.     GadToolsBase = (struct GadToolsBase *) OpenLibrary ("gadtools.library", 36);
  120.     if (GadToolsBase == NULL)
  121.         CleanExit(30);
  122.     WBScreen = LockPubScreen(NULL);
  123.     if (WBScreen == NULL)
  124.         CleanExit(30);
  125.  
  126.     vi = GetVisualInfo (WBScreen, TAG_DONE);
  127.     if (vi == NULL)
  128.         CleanExit(30);
  129.  
  130.     ExecLists[0]= &(ExecBase->PortList);
  131.     ExecLists[1]= &(ExecBase->DeviceList);
  132.     ExecLists[2]= &(ExecBase->LibList);
  133.     ExecLists[3]= &(ExecBase->TaskWait);
  134.     ExecLists[4]= &(ExecBase->ResourceList);
  135.     ExecLists[5]= &(ExecBase->MemList);
  136.  
  137.     ng.ng_TextAttr = WBScreen->Font;
  138.         ng.ng_TopEdge= (WBScreen->Font->ta_YSize *4)/3;
  139.     ng.ng_VisualInfo = vi;
  140.     g0 = CreateContext (&gadlist);
  141.         ng.ng_Flags= PLACETEXT_IN;
  142.         ng.ng_GadgetID=NODEGAD_ID;
  143.     g0 = CreateGadget(LISTVIEW_KIND, g0, &ng,
  144.                     GTLV_Labels,ExecLists[0],
  145. /*                     GTLV_ShowSelected,NULL, */
  146. /*                     GTLV_Active, 1, */
  147.                                         TAG_DONE);
  148.     if (!g0)
  149.         Bummer("ListView Gad failed");
  150.         ng.ng_Height = ng.ng_TopEdge; /* (WBScreen->Font->ta_YSize *4)/3;  */
  151.         ng.ng_TopEdge += LVGADHEIGHT+ng.ng_Height;
  152.     ng.ng_Flags= PLACETEXT_IN;
  153.         ng.ng_GadgetID=REFRESHBUTTON;
  154. /*         ng.ng_GadgetText=" REFRESH ";
  155.     g1 = CreateGadget(BUTTON_KIND, g0, &ng, TAG_DONE); */
  156.     g1 = CreateGadget(CYCLE_KIND, g0, &ng, GTCY_Labels, CycleLabels,TAG_DONE);
  157.     if (!g1)
  158.         Bummer("Button Gad failed");
  159.     WBWindow = OpenWindowTags (NULL, WA_Title, (ULONG) "Amiga Lists",
  160.         WA_Flags, (ULONG)SMART_REFRESH|WINDOWCLOSE|WINDOWDEPTH|WINDOWDRAG|ACTIVATE,
  161.         WA_InnerHeight, LVGADHEIGHT+4*ng.ng_Height,
  162.         WA_InnerWidth,LVGADWIDTH+2*LVGADX,
  163.         WA_AutoAdjust, TRUE,
  164.         WA_GimmeZeroZero, TRUE,
  165.         WA_IDCMP, (ULONG)CLOSEWINDOW|BUTTONIDCMP|ACTIVEWINDOW,
  166.         TAG_DONE);
  167.     AddGList (WBWindow, gadlist, -1, -1, NULL);
  168.     RefreshGList(WBWindow->FirstGadget, WBWindow, NULL, (UWORD)-1);
  169.     GT_RefreshWindow (WBWindow, NULL);
  170.     handleIDCMP (WBWindow);
  171. }
  172.